#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <glob.h>
#include <string.h>

#define DELIMS " \t\n"      // 设置分割符



struct cmd_st{
	glob_t globres;

};

static void prompt(){

	printf("mysh-0.1$ ");

}

static void  parse(char * line, struct cmd_st *res){
	char *tok;
	int i = 0 ;
	while(1){
		tok = strsep(&line,DELIMS);
		if(tok == NULL)
			break;
		if(tok[0] == '\0')
			continue;
		glob(tok,GLOB_NOCHECK|GLOB_APPEND*i,NULL,&res->globres);
		i=1;
	}
}

int main(){
	char *linebuf = NULL;
	size_t linebuf_size = 0;
	struct cmd_st cmd;
	pid_t pid;

	while(1){
		prompt();                                      //打印输入提示符
		if(getline(&linebuf,&linebuf_size,stdin)<0)     //获取输入的内容,传入的是一个一级指针的地址，不是二级指针
			break;

		parse(linebuf,&cmd);                                // 解析收到的字符串
		if(0){                  //内部命令，暂不处理
		
		}
		else{                  //外部命令
			pid = fork();
			if(pid < 0){
			}
			else if(pid == 0){
				 execvp(cmd.globres.gl_pathv[0],cmd.globres.gl_pathv);
				perror("execvp()");
				exit(1);
			}
			else
				wait(NULL);
		}

	}
	exit(0);
}
